// le contrat d'interface avec AGBE
/**
 * La liste des tous les objets de l'aventure
 */
agbe.contract_returnGameObjects = function () {
    var result = [
        new GameObject('knife', 'Knife of death','knife.jpg'),
        new GameObject('apple', 'A big apple','apple.jpg')
    ];
    return result;
};
/**
 * @return {Array} la liste de tous les adversaires potentiels dans cette aventure
 */
agbe.contract_returnGameAdversaries = function () {
    var result = [
        new GameAdversary('redCrab', 'Crabe rouge','crab.jpg',11,8),
        new GameAdversary('foretCrabe', 'Crabe de la forêt','crab.jpg',11,8),
        new GameAdversary('redDragon', 'Dragon rouge','redDragon.jpg',30,18)
    ];
    return result;
};
agbe.contract_returnHomePage = function () {
    return 'plage_intro.html';
};

/**
 * Doit être implémentée pour faire fonctionner l'initialisation d'une partie.
 * @return {Object}
 */
agbe.contract_returnNewGameContext = function () {
    var result = {
        currentPage:'index.html',
        currentInventory: new Array(),
        currentDate : new Date(1605,08,05,10,0,0,0),
        currentHealth:20,
        currentHability:14,
        maxHealth:20,
        worldState:{}
    };
    return result;
};

var gameObjectUsageControls = function (objectEvent) {
    if (agbe.gameContext.currentGamePage.indexOf('plage.html') > -1) {
		if (!agbe.isWProp('plage_liberated')) {
			agbe.setWProp('plage_liberated',true);
			agbe.displayUserMessage('Vous réussissez à vous détacher en coupant les cordages qui vous entravaient !');
			objectEvent.preventDefaultBehavior();
		}
    }
};

var plageRefresh = function() {
    agbe.playSound('sound/mer.ogg',0);
}

var plageIntroRefresh = function() {
    agbe.playSound('sound/mer.ogg',0);
}

var gamePageRefreshListener = function() {
    if (agbe.gameContext.currentGamePage.indexOf('plage.html') > -1) {
        plageRefresh();
    }
    if (agbe.gameContext.currentGamePage.indexOf('plage_intro.html') > -1) {
        plageIntroRefresh();
    }
};

function gameReady() {
    agbe.registerUseObjectCallback(gameObjectUsageControls);
    agbe.registerPageRefreshListener(gamePageRefreshListener);
};

// les fonctions spécifiques à l'aventure
// les actions
function prendreCouteau() {
    agbe.showWait();
    agbe.addObjectToInventory('knife');
    agbe.getWorldState().noMoreKnife=true;
    agbe.saveCurrentGameContext();
    agbe.refreshPage();
}

function gererCombatCrabeRouge(fightEndEvent) {
    if (fightEndEvent.fightWon) {
        agbe.addWorldStateProperty('plage_matin.redCrabDead');
    }
}

function foretGererCombatCrabeRouge(fightEndEvent) {
	alert('coucouForet');
    if (fightEndEvent.fightWon) {
    	alert('coucouGagne');
        agbe.addWorldStateProperty('plage_matin.redCrabDead');
    }
}

$(document).ready(function() {
    gameReady();
	agbe.onReady();
});